package com.voltmao.service.application.sys;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.voltmao.persistent.mapper.CorpEmployesUserMapper;
import com.voltmao.persistent.mapper.ProviderUserMapper;
import com.voltmao.webpro.utils.DateUtil;
import com.voltmao.webpro.utils.HtmlUtil;

import java.util.ArrayList;
import java.util.Date;

/**
 * 所有合通知生成模板
 *
 * @author zhanglin
 * @date 2018/4/23
 */
@Service
public class MessageTemplateServiceImpl {

    private static final Logger msgLogger = LoggerFactory.getLogger("MESSAGE_LOGGER");

    @Autowired
    MessageServiceImpl messageService;
    @Autowired
    CorpEmployesUserMapper corpEmployesUserMapper;
    @Autowired
    ProviderUserMapper providerUserMapper;

    /**
     * 新增合同时，提示总监有新通知
     * @param from 发送者ID,
     * @param to 接收者ID
     * @param providerId 渠道商id
     */
    public void contractAdd(String from, String to, String providerId) {
        msgLogger.info("新增合同给总监看：");
        msgLogger.info("from："+from+";to:"+to+";providerId:"+providerId);
        String msgTitle ="新增合同等待审核";
        ArrayList<String> msgs = new ArrayList<>();
        msgs.add("有新的合同等待初审。");
        msgs.add("提交人员："+getName(from));
        msgs.add("服务商名称："+getProviderName(providerId));
        msgs.add("提交时间："+DateUtil.getDateStr(new Date(), "yyyy-MM-dd HH:mm:ss"));
        msgs.add("请尽快处理。");
        String msgText = HtmlUtil.formateMsg(msgs);
        String url = "no url";
        messageService.addMsg(from,to,msgTitle,msgText,url,0);
    }

    /**
     * 初审不通过（通过），提示员工
     * @param from 发送者ID,
     * @param to 接收者ID
     * @param isPass 初审是否通过
     */
    public void contractFirstAudit(String from, String to, String providerId, boolean isPass) {
        msgLogger.info("合同初审结果给员工看：");
        msgLogger.info("from："+from+";to:"+to+";providerId:"+providerId+";isPass:"+isPass);
        String msgTitle ="合同初审"+(isPass?"通过":"不通过");
        ArrayList<String> msgs = new ArrayList<>();
        msgs.add("有新的合同初审结果。");
        msgs.add("审核人员："+getName(from));
        msgs.add("服务商名称："+getProviderName(providerId));
        msgs.add("审核时间："+DateUtil.getDateStr(new Date(), "yyyy-MM-dd HH:mm:ss"));
        msgs.add("审核结果："+(isPass?"通过":"不通过"));
        msgs.add("请尽快处理。");
        String msgText = HtmlUtil.formateMsg(msgs);
        String url = "";
        messageService.addMsg(from,to,msgTitle,msgText,url,0);
    }

    /**
     * 初审不通过,员工修改后重新提交，提示总监有新审核
     * @param from 发送者ID,
     * @param to 接收者ID
     */
    public void contractTJAgain(String from, String to, String providerId){
        msgLogger.info("初审不通过，修改参数后给总监看：");
        msgLogger.info("from："+from+";to:"+to+";providerId:"+providerId);
        String msgTitle ="修改合同后等待审核";
        ArrayList<String> msgs = new ArrayList<>();
        msgs.add("合同初审失败。修改后的合同等待初审。");
        msgs.add("提交人员："+getName(from));
        msgs.add("服务商名称："+getProviderName(providerId));
        msgs.add("提交时间："+DateUtil.getDateStr(new Date(), "yyyy-MM-dd HH:mm:ss"));
        msgs.add("请尽快处理。");
        String msgText = HtmlUtil.formateMsg(msgs);
        String url = "";
        messageService.addMsg(from,to,msgTitle,msgText,url,0);
    }

    /**
     * 提交了扫描件，提示总监有再审
     * @param from 发送者ID,
     * @param to 接收者ID
     */
    public void contractUploadAgain(String from, String to, String providerId){
        msgLogger.info("提交扫描件给总监看：");
        msgLogger.info("from："+from+";to:"+to+";providerId:"+providerId);
        String msgTitle ="合同扫描件已上传，等待再审";
        ArrayList<String> msgs = new ArrayList<>();
        msgs.add("合同扫描件已上传，等待再审。");
        msgs.add("提交人员："+getName(from));
        msgs.add("服务商名称："+getProviderName(providerId));
        msgs.add("提交时间："+DateUtil.getDateStr(new Date(), "yyyy-MM-dd HH:mm:ss"));
        msgs.add("请尽快处理。");
        String msgText = HtmlUtil.formateMsg(msgs);
        String url = "";
        messageService.addMsg(from,to,msgTitle,msgText,url,0);
    }

    /**
     * 再审不通过（通过），提示员工
     * @param from 发送者ID,
     * @param to 接收者ID
     * @param isPass 初审是否通过
     */
    public void contractSecondAudit(String from, String to, String providerId, boolean isPass) {
        msgLogger.info("再审结果给员工看：");
        msgLogger.info("from："+from+";to:"+to+";providerId:"+providerId+";isPass:"+isPass);
        String msgTitle ="合同扫描件审核";
        if(isPass) {
            msgTitle=msgTitle+"通过";
        } else {
            msgTitle=msgTitle+"不通过";
        }
        ArrayList<String> msgs = new ArrayList<>();
        msgs.add("有新的合同再审结果。");
        msgs.add("审核人员："+getName(from));
        msgs.add("服务商名称："+getProviderName(providerId));
        msgs.add("审核时间："+DateUtil.getDateStr(new Date(), "yyyy-MM-dd HH:mm:ss"));
        msgs.add("审核结果："+(isPass?"通过":"不通过"));
        msgs.add("请尽快处理。");
        String msgText = HtmlUtil.formateMsg(msgs);
        String url = "";
        messageService.addMsg(from,to,msgTitle,msgText,url,0);
    }

    /**
     * 再审通过，提示渠道商
     * @param from 发送者ID,
     * @param to 接收者ID(渠道商)
     */
    public void contractSecondAuditToProvider(String from, String to) {
        msgLogger.info("合同审核通过后，通知渠道商：");
        msgLogger.info("from："+from+";to:"+to);
        String msgTitle ="恭喜成为正式渠道商";
        ArrayList<String> msgs = new ArrayList<>();
        msgs.add("恭喜您，合同审核已通过。正式成为伏特猫的渠道商！！！");
        msgs.add("处理时间："+DateUtil.getDateStr(new Date(), "yyyy-MM-dd HH:mm:ss"));
        msgs.add("请知悉。");
        String msgText = HtmlUtil.formateMsg(msgs);
        String url = "";
        messageService.addMsg(from,to,msgTitle,msgText,url,2);
    }

    /**
     * 当员工新增资料申请，提示总监有新通知
     * @param from 发送者ID,
     * @param to 接收者ID
     */
    public void docApply(String from, String to, String providerId) {
        msgLogger.info("员工新增资料申请给总监看：");
        msgLogger.info("from："+from+";to:"+to+";providerId:"+providerId);
        String msgTitle ="资料申请等待审核";
        ArrayList<String> msgs = new ArrayList<>();
        msgs.add("有新的资料申请等待初审。");
        msgs.add("提交人员："+getName(from));
        msgs.add("服务商名称："+getProviderName(providerId));
        msgs.add("提交时间："+DateUtil.getDateStr(new Date(), "yyyy-MM-dd HH:mm:ss"));
        msgs.add("请尽快处理。");
        String msgText = HtmlUtil.formateMsg(msgs);
        String url = "";
        messageService.addMsg(from,to,msgTitle,msgText,url,1);
    }

    /**
     * 当员工修改了申请，提示总监有新通知
     * @param from 发送者ID,
     * @param to 接收者ID
     */
    public void docUpdate(String from, String to, String providerId) {
        msgLogger.info("员工修改资料申请给总监看：");
        msgLogger.info("from："+from+";to:"+to+";providerId:"+providerId);
        String msgTitle ="资料申请有更新，等待审核";
        ArrayList<String> msgs = new ArrayList<>();
        msgs.add("资料申请有更新，等待初审。");
        msgs.add("提交人员："+getName(from));
        msgs.add("服务商名称："+getProviderName(providerId));
        msgs.add("提交时间："+DateUtil.getDateStr(new Date(), "yyyy-MM-dd HH:mm:ss"));
        msgs.add("请尽快处理。");
        String msgText = HtmlUtil.formateMsg(msgs);
        String url = "";
        messageService.addMsg(from,to,msgTitle,msgText,url,1);
    }

    /**
     * 当审核不通过（通过）时，提示员工
     * @param from 发送者ID,
     * @param to 接收者ID
     * @param isPass 初审是否通过
     */
    public void docAudit(String from, String to, String providerId, boolean isPass) {
        msgLogger.info("资料申请审核结果给员工看：");
        msgLogger.info("from："+from+";to:"+to+";providerId:"+providerId+";isPass:"+isPass);
        String msgTitle ="资料申请审核"+(isPass?"通过":"不通过");
        ArrayList<String> msgs = new ArrayList<>();
        msgs.add("有新的资料审核结果。");
        msgs.add("审核人员："+getName(from));
        msgs.add("服务商名称："+getProviderName(providerId));
        msgs.add("审核时间："+DateUtil.getDateStr(new Date(), "yyyy-MM-dd HH:mm:ss"));
        msgs.add("请知悉。");
        String msgText = HtmlUtil.formateMsg(msgs);
        String url = "";
        messageService.addMsg(from,to,msgTitle,msgText,url,1);
    }

    /**
     * 渠道信息认证结果通知
     * @param from 负责审核的业务员id
     * @param to   渠道id
     * @param isPass  认证是否通过
     */
    public void auditIntentInfo(String from,String to,boolean isPass){
        msgLogger.info("意向渠道信息认证【to：渠道】");
        msgLogger.info("from:"+from+";to:"+to+";isPass:"+isPass);
        String msgTitle ="渠道信息认证"+(isPass?"通过":"不通过");
        ArrayList<String> msgs = new ArrayList<>();
        msgs.add("有新的渠道信息认证结果。");
        msgs.add("审核人员："+getName(from));
        msgs.add("服务商名称："+getProviderName(to));
        msgs.add("审核时间："+DateUtil.getDateStr(new Date(), "yyyy-MM-dd HH:mm:ss"));
        msgs.add("请知悉。");
        String msgText = HtmlUtil.formateMsg(msgs);
        String url = "";
        messageService.addMsg(from,to,msgTitle,msgText,url,2);
    }

    /**
     * 渠道申请信息认证
     * @param from 渠道id
     * @param to   负责该渠道的业务id
     */
    public void applyAuditInfo(String from,String to){
        msgLogger.info("意向渠道申请信息认证【to：业务】");
        msgLogger.info("from:"+from+";to:"+to);
        String msgTitle ="意向渠道申请信息认证";
        ArrayList<String> msgs = new ArrayList<>();
        msgs.add("有新的渠道申请信息认证。");
        msgs.add("审核人员："+getName(to));
        msgs.add("服务商名称："+getProviderName(from));
        msgs.add("请知悉。");
        String msgText = HtmlUtil.formateMsg(msgs);
        String url = "";
        messageService.addMsg(from,to,msgTitle,msgText,url,2);
    }

    /**
     * 渠道注册后，提示总监有待分配的意向渠道
     * @param from 渠道id
     * @param to 总监id
     */
    public void registerInfoToZj(String from,String to){
        msgLogger.info("待分配意向渠道【to：总监】");
        msgLogger.info("from:"+from+";to:"+to);
        String msgTitle ="有新待分配的意向渠道";
        ArrayList<String> msgs = new ArrayList<>();
        msgs.add("有新的意向渠道待分配。");
        msgs.add("意向渠道名："+getProviderName(from));
        msgs.add("请知悉。");
        String msgText = HtmlUtil.formateMsg(msgs);
        String url = "";
        messageService.addMsg(from,to,msgTitle,msgText,url,2);
    }

    /**
     * 总监分配意向渠道给业务后，通知业务
     * @param from 总监id
     * @param to 业务id
     */
    public void assignInfoToYw(String from,String to){
        msgLogger.info("分配到新的意向渠道【to：业务】");
        msgLogger.info("from:"+from+";to:"+to);
        String msgTitle ="分配到了新的意向渠道";
        ArrayList<String> msgs = new ArrayList<>();
        msgs.add("有新的意向渠道资料待认证。");
        msgs.add("审核人员："+getName(to));
        msgs.add("请知悉。");
        String msgText = HtmlUtil.formateMsg(msgs);
        String url = "";
        messageService.addMsg(from,to,msgTitle,msgText,url,2);
    }

    /**
     * 总监分配意向渠道给业务后，通知渠道
     * @param from 总监id
     * @param to 渠道id
     * @param emplId 业务id
     */
    public void assignInfoToIntent(String from,String to,String emplId){
        msgLogger.info("被分配到业务【to：渠道】");
        msgLogger.info("from:"+from+";to:"+to);
        String msgTitle ="有伏特猫业务员将与您接洽";
        ArrayList<String> msgs = new ArrayList<>();
        msgs.add("有伏特猫业务员将与您接洽。");
        msgs.add("业务员："+getName(emplId));
        msgs.add("请知悉。");
        String msgText = HtmlUtil.formateMsg(msgs);
        String url = "";
        messageService.addMsg(from,to,msgTitle,msgText,url,2);
    }
    /**
     *
     * @param id 用户的id
     * @return 用户的名称
     */
    public String getName(String id){
        return corpEmployesUserMapper.selectByPrimaryKey(id).getName();
    }

    public String getProviderName(String id){
        return providerUserMapper.selectByPrimaryKey(id).getName();
    }

}
